package com.lvmama.rhino.service;

import com.github.pagehelper.PageInfo;
import com.lvmama.rhino.pojo.ContinuityCode;
import com.lvmama.rhino.pojo.FlowData;
import com.lvmama.rhino.pojo.FlowStatisticsVo;

import java.util.List;
import java.util.Map;


/**
 * 
 * 
 * @author yuanchi
 *
 */
public interface FlowStatisticsService
{
	
	/** 
	* @Title: landingPageTab 
	* @Description: 着陆页tab
	* @param @param param
	* @param @return    设定文件 
	* @return PageInfo<FlowStatisticsVo>    返回类型 
	* @throws 
	*/
	PageInfo<FlowStatisticsVo> landingPageTab(Map<String,Object> param);
	
	/**
	 * 
	* @Title: landingPageDepthTime 
	* @Description: TODO 查询访问深度，访问时长以及条件下访问总量
	* @param @param param
	* @param @return    设定文件 
	* @return Map<String,List<FlowStatisticsVo>>    返回类型 
	* @throws
	 */
	Map<String,List<FlowStatisticsVo>> landingPageDepthTime(Map<String,Object> param);
    
	List<FlowStatisticsVo> landingRegionData(Map<String, Object> param);
	/**
	 * 
	* @Title: landingPageRank 
	* @Description: TODO(这里用一句话描述这个方法的作用) 
	* @param @param param
	* @param @return    设定文件 
	* @return Map<String,List<FlowStatisticsVo>>    返回类型 
	* @throws
	 */
	Map<String,List<FlowStatisticsVo>> landingPageRank(Map<String,String> param);
	
	/**
	 * 
	* @Title: queryLandingPageList 
	* @Description: TODO 查询着落页排名情况，支持分页
	* @param @param param
	* @param @return    设定文件 
	* @return PageInfo<FlowStatisticsVo>    返回类型 
	* @throws
	 */
	PageInfo<FlowStatisticsVo> queryLandingPageList(Map<String,Object> param);
	
	/**
	 * 
	* @Title: queryAccessPageList 
	* @Description: TODO 查询访问流量排名情况，支持分页
	* @param @param param
	* @param @return    设定文件 
	* @return PageInfo<FlowStatisticsVo>    返回类型 
	* @throws
	 */
	PageInfo<FlowStatisticsVo> queryAccessPageList(Map<String, Object> param);
	
	/**
	 * 
	* @Title: queryFlowStatisticsSum 
	* @Description: TODO 流量总量查询
	* @param @param param
	* @param @return    设定文件 
	* @return int    返回类型 
	* @throws
	 */
	Long queryFlowStatisticsSum(Map<String, String> param);
	
	/**
	 * 
	* @Title: queryFlowFromList 
	* @Description: TODO 页面流量来源分组查询  
	* @param @param param
	* @param @return    设定文件 
	* @return List<FlowStatisticsVo>    返回类型 
	* @throws
	 */
	PageInfo<FlowStatisticsVo> queryFlowFromList(Map<String, Object> param);
	
	/**
	 * 
	* @Title: queryFlowToList 
	* @Description: TODO 页面流量去向分组查询  
	* @param @param param
	* @param @return    设定文件 
	* @return List<FlowStatisticsVo>    返回类型 
	* @throws
	 */
	PageInfo<FlowStatisticsVo> queryFlowToList(Map<String, Object> param);

	/**
	 * 查询流量来源去向总和
	 * @param param
	 * @return
	 */
	Map<String, Long>  queryFlowFromAndToSum(Map<String, Object> param);
	
	/**
	 * 
	* @Title: queryFlowbyChannel 
	* @Description: TODO 流量渠道来源分组查询，用于页面漏斗展示
	* @param @param param
	* @param @return    设定文件 
	* @return List<FlowStatisticsVo>    返回类型 
	* @throws
	 */
	public List<FlowStatisticsVo> queryFlowbyChannel(Map<String, Object> param);
	
	/**
	 * 
	* @Title: queryFlowbyChannelWap 
	* @Description: TODO 查询PC/M站直接访问的流量情况
	* @param @param param
	* @param @return    设定文件 
	* @return List<FlowStatisticsVo>    返回类型 
	* @throws
	 */
	public List<FlowStatisticsVo> queryFlowbyChannelWap(Map<String, Object> param);
	
	/**
	 * 
	* @Title: queryFlowbyChannel 
	* @Description: TODO 查询app直接访问流量情况
	* @param @param param
	* @param @return    设定文件 
	* @return List<FlowStatisticsVo>    返回类型 
	* @throws
	 */
	public List<FlowStatisticsVo> queryFlowbyApp(Map<String, Object> param);
	
	/**
	 * 
	* @Title: queryContinuityCode 
	* @Description: TODO 查询code码表
	* @param @return    设定文件 
	* @return List<ContinuityCode>    返回类型 
	* @throws
	 */
	List<ContinuityCode> queryContinuityCode();
	
	/**
	 * 
	* @Title: queryFlowbyChannel 
	* @Description: TODO 查询app直接访问流量情况
	* @param @param param
	* @param @return    设定文件 
	* @return List<FlowStatisticsVo>    返回类型 
	* @throws
	 */
	public FlowData queryFlowStatisticsData(Map<String, Object> param);

	/**
	 * 查询详情
	 * @param param
	 * @return
	 */
	public List<FlowStatisticsVo>  queryFlowDetailFromList(Map<String, Object> param);

	/**
	 * 查询详情
	 * @param param
	 * @return
	 */
	public List<FlowStatisticsVo>  queryFlowDetailToList(Map<String, Object> param);

}
